package com.shujia;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.resps.Tuple;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class RedisAPI {
    public static void main(String[] args) {
        //创建与Redis服务的连接对象
        //public Jedis(String host, int port) {
        //        this.commandObjects = new CommandObjects();
        //        this.db = 0;
        //        this.transaction = null;
        //        this.isInMulti = false;
        //        this.isInWatch = false;
        //        this.pipeline = null;
        //        this.dataSource = null;
        //        this.connection = new Connection(host, port);
        //    }
        Jedis jedis = new Jedis("192.168.220.100", 7000);

        //使用连接对象操作redis数据库
        //操作string数据类型的值
        //set key value
//        jedis.set("name","小虎");
//        //get name
//        String s = jedis.get("name");
//        System.out.println(s);
//        //对键设置过期时间
//        //expire key 秒
//        jedis.expire("name",10);
//
//        //操作list数据类型的值
//        //lpush
//        //rpush
//        jedis.lpush("list","hadoop","hive","hbase","redis");
//        //lrange key 0 -1
//        List<String> stringList = jedis.lrange("list", 0, -1);
//        for (String string : stringList) {
//            System.out.println(string);
//        }

        //操作set数据类型的值
        //sadd set1 xxx xx xx
//        jedis.sadd("set1","hello","world","java","hello");
//        Set<String> set1 = jedis.smembers("set1");
//        for (String s : set1) {
//            System.out.println(s);
//        }

        //操作zset数据类型的值
        //需要先将多个元素和分数封装成一个Map集合
//        HashMap<String, Double> map = new HashMap<>();
//        map.put("小虎", 80.0);
//        map.put("尚平", 81.0);
//        map.put("丁义杰", 82.0);
//        map.put("小虎2", 70.0);
//        jedis.zadd("scores", map);

        //升序获取
//        List<Tuple> scores = jedis.zrangeWithScores("scores", 0, 100);
//        for (Tuple score : scores) {
//            String element = score.getElement();
//            double score1 = score.getScore();
//            System.out.println(element + "--" + score1);
//        }
//        System.out.println("========================================");
//        //降序获取
//        List<Tuple> scores1 = jedis.zrevrangeWithScores("scores", 0, 100);
//        for (Tuple tuple : scores1) {
//            String element = tuple.getElement();
//            double score = tuple.getScore();
//            System.out.println(element + "---" + score);
//        }

        //操作hash数据类型的值
        //先将值的map集合封装一下
//        HashMap<String, String> map = new HashMap<>();
//        map.put("姓名","小虎");
//        map.put("年龄","18");
//        map.put("地址","安徽");
//        map.put("爱好","吃");
//        jedis.hset("小虎info",map);
//        Map<String, String> mapRes = jedis.hgetAll("小虎info");
//        Set<Map.Entry<String, String>> entries = mapRes.entrySet();
//        for (Map.Entry<String, String> entry : entries) {
//            String key = entry.getKey();
//            String value = entry.getValue();
//            System.out.println(key + ":" + value);
//        }

        jedis.setbit("bit1",1,true);
        jedis.setbit("bit1",7,true);

        String s = jedis.get("bit1");
        System.out.println(s);


        //关闭连接，释放资源
        jedis.close();
    }
}
